package Servicios;

import java.util.ArrayList;
import java.util.List;

import Negocio.Deposito;
import Persistencia.IRepository;
import Persistencia.QueryParameter;
import Persistencia.Repository;
import Persistencia.RepositoryException;


public class ServicioDepositos {
	private IRepository<Deposito> repositorioDepositos;
	private static ServicioDepositos instance = null;

	private ServicioDepositos() {
		this.repositorioDepositos = new Repository<Deposito>();
	}

	public static ServicioDepositos getInstance() {
		if (instance == null) {
			instance = new ServicioDepositos();
		}
		return instance;
	}

	
	public List<Deposito> getDepositos() throws ServiceException {
		List<Deposito> depositos;

		try {
			depositos = this.repositorioDepositos.getAll(Deposito.class);
		} catch (RepositoryException e) {
			throw new ServiceException(e);
		}

		return depositos;
	}

	public void guardarOActualizar(Deposito deposito) throws ServiceException {
		try {
			this.repositorioDepositos.saveOrUpdate(deposito);
		} catch (RepositoryException e) {
			throw new ServiceException(e);
		}
	}

	public Deposito getDeposito(int depositoId) throws RepositoryException {
		String queryExpression = "from Deposito d where d.depositoId = :depositoId";
		QueryParameter parameter = new QueryParameter("depositoId", depositoId);
		Deposito deposito = this.repositorioDepositos.get(queryExpression, parameter);

		return deposito;
	}

}
